home *** CD-ROM | disk | FTP | other *** search
Wrap
{ if(true) { CAircraftChinook = §§newclass(CAircraftChinook,CAircraft); } } package Local.Game.Thing { import Local.Game.World.*; import Local.Game.World.Map.*; import Local.Game.World.Map.Cell.*; import Local.Math.*; import STC9.System.*; import flash.display.*; import flash.events.*; import flash.geom.*; public class CAircraftChinook extends CAircraft { public var mCommandFunction:Function; private var mAltitude:Number; private var mMinAltitude:Number; private var mSpawnRateCount:int; private var mSpawnCount:int; private var mRearRotor:CThingAnimation; private var mSpawnRate:int; private var mCargo:String; private var mMaxAltitude:Number; private var mTrackSoundID:String; private var mMainRotor:CThingAnimation; private var mSCargo:CThingAnimation; private var _Command:String; public function CAircraftChinook(param1:CPosition, param2:String) { super(param1); mCargo = param2; mType = "chinook"; Process = Process_Normal; mCommand = "proceed"; mMaxLife = mLife = 100; mMaxSpeed = (18 + Math.random() * 5) * mSpriteScalar; mSpeed = 0; mAcceleration = 0.6; §§push(§§findproperty(mMaxAltitude)); §§push(§§findproperty(mAltitude)); if(true) { if(mCargo == "troop") { addr56: §§push(150); if(true) { } } else { §§push(200); } §§pop().mMaxAltitude = §§pop().mAltitude = §§pop(); mMinAltitude = mCargo == "troop" ? 30 : 120; mOrientation = 1; mDelta = new CPosition(0,0); AddThing(mMainRotor = new CThingAnimation(Chinook_MainRotor)); AddThing(mRearRotor = new CThingAnimation(Chinook_MainRotor)); if(mCargo == "tank") { AddThing(mSCargo = new CThingAnimation(Cargo_TankM1A1)); } AddAnimation("stand",Chinook,"AddSprite_Black"); SetCollisionBySprite(mAnimation[0]); AddLoopingSound("flight",Apache_Move); mTrackSoundID = PlaySound("flight"); IncrementBuild(); SetState("GOTO"); Process(); return; } §§goto(addr56); } public static function get mCost() : int { return 25000; } public function get mIconIndex() : int { return 4; } override public function Dispose() : void { if(true) { if(mDisposed) { if(true) { return; } } else { super.Dispose(); } StopSound(mTrackSoundID); } } public function State_MOUSEOVER_Enter() : void { } public function get mCommandDrop() : Boolean { return true; } public function State_DROPTANK_Exit() : void { } public function get mCommand() : String { return _Command; } public function set mCommand(param1:String) : void { _Command = param1; mCommandFunction = this["Command_" + _Command]; } public function State_EXIT() : void { if(true) { Accelerate_Speed(); if(true) { mAngle.mAngle256 = mSpeed / mMaxSpeed * 2 - (mMaxAltitude - mAltitude) / 15; if(true) { §§push(§§findproperty(mAltitude)); §§push(mAltitude); if(true) { §§push(mSpeed / mMaxSpeed); if(true) { §§push(§§pop() * 7); } §§push(§§pop() + §§pop()); } §§pop().mAltitude = §§pop(); _Move(); } if(mAltitude > 500) { } §§goto(addr64); } Dispose(); } addr64: } public function State_GOTO_Exit() : void { } public function State_MOUSEOVER_Exit() : void { } public function State_GOTO() : void { mCommandFunction(); } public function State_MOUSEOVER() : void { §§push(mStateCount < 0); if(true) { §§push(§§pop() && !mMouseOver); } if(§§pop()) { SetState(mReturnStateID); } } public function State_DROPTANK() : void { var _loc1_:Point = null; if(!mSCargo) { return; } mSCargo.mInvisible = true; _loc1_ = OrientatePoint(mSCargo.mSprite.mObjects["create"].mPosition.clone(),mSCargo.mPosition); mLevel.AddFriend(new CVehicleTankM1A1(new CPosition(_loc1_.x,_loc1_.y))); mSCargo = null; SetState("EXIT"); } public function State_LANDTANK_Exit() : void { } public function get mLongName() : String { return "CHINOOK TRANSPORT HELICOPTER"; } public function get mCommandProceed() : Boolean { return true; } override public function Explode(param1:Point = null) : void { super.Explode(param1); State_DROPTANK(); } private function _Move() : void { var _loc1_:Number = NaN; if(mSpeed) { mDelta.Copy(CPosition.NORMALIZE(mAngle.mDelta,mSpeed)); mPosition.Add(mDelta); _loc1_ = Math.min(50,mAltitude / 2); mPosition.y = (GetAltitude(mPosition.x - _loc1_) + GetAltitude(mPosition.x + _loc1_)) / 2 - mAltitude; if(MapMove()) { Process_ReachedObjective(); } mCollide.Update(); } } public function State_LANDTROOP_Enter() : void { } public function Command_halt() : void { if(true) { Deaccelerate_Speed(0.1); if(true) { mAngle.mAngle256 = mSpeed / mMaxSpeed * 2; } _Move(); } } public function State_EXIT_Enter() : void { } public function State_LANDTANK_Enter() : void { } public function State_DROPTANK_Enter() : void { } public function get mShortDesc() : String { return "The Chinook is a twin-engine, tandem rotor heavy-lift helicopter. Capable of bringing troops and a tank to the frontline. Has no attack capabilities!"; } public function State_DROPTROOP_Enter() : void { } public function State_DROPTROOP() : void { var _loc1_:Point = null; if(true) { var _loc3_:*; var _loc2_:*; §§push(_loc3_ = (_loc2_ = §§findproperty(mSpawnRateCount)).mSpawnRateCount + 1); if(true) { _loc2_.mSpawnRateCount = _loc3_; } if(§§pop() > mSpawnRate) { mSpawnRateCount = 0; _loc1_ = OrientatePoint(mSprite.mObjects["drop"].mPosition.clone(),mPosition); mLevel.AddFriend(new CPeepM16(new CPosition(_loc1_.x,_loc1_.y))); addr33: §§push((_loc2_ = §§findproperty(mSpawnCount)).mSpawnCount); if(true) { §§push(_loc3_ = §§pop() - 1); if(true) { _loc2_.mSpawnCount = _loc3_; } } if(§§pop() <= 0) { SetState("EXIT"); } } return; } §§goto(addr33); } public function State_GOTO_Enter() : void { if(true) { mSpeed = 0; } } public function State_LANDTANK() : void { if(true) { Deaccelerate_Speed(0.03); if(true) { mAngle.mAngleRAD = (mSpeed / mMaxSpeed * 2 - (mMaxAltitude - mAltitude) / 50) * Math.PI / 128; if(true) { §§push(§§findproperty(mAltitude)); §§push(mSpeed / mMaxSpeed); §§push(mMaxAltitude); if(true) { §§push(§§pop() * (§§pop() - mMinAltitude)); §§push(mMinAltitude); } §§pop().mAltitude = §§pop() + §§pop(); _Move2(); } if(Math.abs(mAltitude - mMinAltitude) <= 1) { } §§goto(addr75); } SetState("DROPTANK"); } addr75: } override public function Draw() : void { var _loc1_:Matrix = null; var _loc2_:Point = null; super.Draw(); _loc1_ = GetOrientationMatrix(); if(true) { DrawSprite(_loc1_); } _loc2_ = _loc1_.transformPoint(mSprite.mObjects["mainrotor"].mPosition); if(true) { §§push(mMainRotor); if(true) { §§pop().mPosition.SetXY(_loc2_.x + mPosition.x,_loc2_.y + mPosition.y); if(true) { mMainRotor.mAngle.mAngle = mAngle.mAngle / 3; } §§push(mMainRotor); } §§pop().Draw(); } _loc2_ = _loc1_.transformPoint(mSprite.mObjects["rearrotor"].mPosition); mRearRotor.mPosition.SetXY(_loc2_.x + mPosition.x,_loc2_.y + mPosition.y); mRearRotor.mAngle.mAngle = mAngle.mAngle / 3; mRearRotor.Draw(); if(mSCargo) { mSCargo.Draw(); } } public function State_EXIT_Exit() : void { } private function _Move2() : void { var _loc1_:Number = NaN; var _loc2_:Point = null; if(true) { if(mSpeed) { if(true) { mDelta.Copy(CPosition.NORMALIZE(mAngle.mDelta,mSpeed)); if(true) { mPosition.Add(mDelta); } _loc1_ = Math.min(50,mAltitude / 2); } mPosition.y = (GetAltitude(mPosition.x - _loc1_) + GetAltitude(mPosition.x + _loc1_)) / 2 - mAltitude; addr66: _loc2_ = OrientatePoint(mSprite.mObjects["drop"].mPosition.clone(),mPosition); if(_loc2_.y < 0) { mPosition.y = mMinAltitude + (mPosition.y - _loc2_.y); } if(MapMove()) { Process_ReachedObjective(); } mCollide.Update(); } return; } §§goto(addr66); } public function Command_drop() : void { §§push(§§findproperty(SetState)); if(true) { §§pop().SetState(mCargo == "troop" ? "LANDTROOP" : "LANDTANK"); return; } §§goto(addr15); } public function get mCommandHalt() : Boolean { return false; } override public function get mSmallPrize() : int { return mCost; } public function Command_proceed() : void { if(true) { Accelerate_Speed(); if(true) { mAngle.mAngle256 = mSpeed / mMaxSpeed * 2; } _Move(); } } override public function get mPrize() : int { return mCost * 2; } public function Process_Normal() : void { if(Process_State != null) { Process_State(); } if(mDisposed) { return; } if(mSCargo) { mSCargo.mPosition.Copy(OrientatePoint(mSprite.mObjects["rope"].mPosition.clone(),mPosition)); } Process_Children(); if(mDead) { State_DROPTANK(); DispatchDispose(); } } public function State_LANDTROOP() : void { Deaccelerate_Speed(0.025); mAngle.mAngleRAD = (mSpeed / mMaxSpeed * 2 - (mMaxAltitude - mAltitude) / 15) * Math.PI / 128; §§push(§§findproperty(mAltitude)); §§push(mSpeed / mMaxSpeed); if(true) { §§push(§§pop() * (mMaxAltitude - mMinAltitude) + mMinAltitude); } §§pop().mAltitude = §§pop(); _Move2(); if(Math.abs(mAltitude - mMinAltitude) <= 1) { SetState("DROPTROOP"); mSpawnRate = 10; mSpawnRateCount = 0; mSpawnCount = 10; } } public function get mCommandTakeControl() : Boolean { return false; } public function State_LANDTROOP_Exit() : void { } public function State_DROPTROOP_Exit() : void { } } }